/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import java.util.List;

/**
 *
 * @author Sebastian
 */
public abstract class Intermediario {

    public abstract boolean actualizar(Object objeto);

    public abstract boolean eliminar(Object objeto);

    public List<Object> buscar(Criterio criterio) {
        List<Object> resul;
        if (criterio != null) {
            resul = materializar(criterio);
        } else {
            resul = materializar(null);
        }
//        for (Object object : resul) {
//            if (Cache.getInstancia().buscar(((Agente) object).getOid()) == null) {
//                Cache.getInstancia().agregar((Agente) object);
//            }
//        }
        return resul;
    }

    public Object buscar(String oid) {
        Object resul; //= Cache.getInstancia().buscar(oid);
//        if (resul == null) {
            resul = materializarXOid(oid);
//            Cache.getInstancia().agregar((Agente) resul);
//        }
        return resul;
    }

    public boolean guardar(Object objeto){
        desmaterializar(objeto);
//        Cache.getInstancia().quitar((Agente)objeto);     
        return true;
    }

    protected abstract List<Object> materializar(Criterio criterio);

    protected abstract Object materializarXOid(String oid);
    
    protected abstract void desmaterializar(Object objeto);
}
